// controller/TestController.java
package com.example.demo.cros;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@RestController
@RequestMapping("/cros")
public class TestController {

    // 接口1：设置Cookie（模拟第一个域名）
    @GetMapping("/set-cookie")
    public String setCookie(HttpServletResponse response) {
        // 设置Cookie：domain为父域名（本地测试用localhost的父域，实际应为.example.com）
        Cookie cookie = new Cookie("user_id", "123456");
        cookie.setDomain("localhost");  // 关键：两个子域名共享localhost的Cookie
        cookie.setDomain("api.localhost");  // 关键：两个子域名共享localhost的Cookie

        cookie.setPath("/");  // 所有路径可见
        cookie.setMaxAge(3600);  // 有效期1小时
        cookie.setHttpOnly(true);  // 防止 XSS
        cookie.setSecure(false);   // 本地测试用 HTTP，生产环境用 HTTPS 时设为 true
//        cookie.setAttribute("SameSite", "None");  // 跨域 Cookie 必须设置
        response.addCookie(cookie);
        return "Cookie已设置（域名：localhost）";
    }

    // 接口2：读取Cookie（模拟第二个域名）
    @GetMapping("/get-cookie")
    public String getCookie(HttpServletRequest request) {
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if ("user_id".equals(cookie.getName())) {
                    return "读取到Cookie：" + cookie.getName() + "=" + cookie.getValue() + "（域名：localhost）";
//                    return "读取到Cookie：" + cookie.getName() + "=" + cookie.getValue() + "（域名：api.localhost）";
                }
            }
        }
        return "未读取到Cookie（跨域限制或未设置）";
    }
}